#include "Script.hpp"
#include <iostream>

PropertyValue Script::GetPropertyValue(const std::string& name) const {
    auto it = m_properties.find(name);
    if (it != m_properties.end()) {
        return it->second;
    }
    
    // 如果属性不存在，尝试从属性描述中获取默认值
    auto properties = GetProperties();
    for (const auto& prop : properties) {
        if (prop.name == name) {
            return prop.defaultValue;
        }
    }
    
    // 返回空值
    return PropertyValue{};
}

void Script::SetPropertyValue(const std::string& name, const PropertyValue& value) {
    m_properties[name] = value;
    
    // 调用属性变更回调
    if (m_propertyChangedCallback) {
        m_propertyChangedCallback(name, value);
    }
}